I've been investigating a crash that happens with AVSVideoConverter (8.1.1.509) when trying to edit and convert some high definition video. The source video parameters are: Video Codec: H.264/AVC Frame Size: 1440 x 1080 Bitrate: 9163 kbps Frame Rate: 25 fp/s Audio Codec: Unknown name Sampe Rate: 48000 Hz, 16 bit Bitrate: 0 Channels: 2 The output parameters are: Video Codec: H.264/AVC Frame Size: 1920 x 1080 Bitrate: 12000 kbps Frame Rate: 25 fp/s (Original) Audio Codec: Mp3 Sampe Rate: 44100 Hz, 24 bit Bitrate: 256 kpbs Channels: stereo The source video is actually from the BBC HD channel and obviously has 2 distinct components to it and they probably have slightly different encoding characteristics. There are the BBC links either side of the actual program and it appears that AVSVideoConverter has a problem at the boundary of these two elements. The edit process is to remove the program links and leave the main program. This works fine, the editor can jump back and forth across all sections of the video file. Even the 'next scene' works. However, when the conversion is started AVSVideoConverter reports an exception and stops. The same exception happens in the edit console if "play" is selected and causes the timeline to cross the boundary between the program links and the actual program. I have tried most of the available Video Codecs and all have the same or similar problem. I decided to run AVSVideoConverter under a debugger and here are some results. Although not related to this problem there are a number of first chance exceptions on loading AVSVideoConverter. The most interesting one is copied below. =================================================================== ModLoad: 00000000`5c230000 00000000`5c296000 C:\Windows\SysWOW64\MSVCP60.dll ModLoad: 00000000`61fd0000 00000000`62008000 C:\Windows\SysWOW64\odbcint.dll ModLoad: 00000000`71ae0000 00000000`71b2c000 C:\Windows\SysWOW64\apphelp.dll (1014.2fa0): Access violation - code c0000005 (first chance) First chance exceptions are reported before any exception handling. This exception may be expected and handled. *** WARNING: Unable to verify checksum for C:\Windows\SysWOW64\DivX.dll *** ERROR: Symbol file could not be found. Defaulted to export symbols for C:\Windows\SysWOW64\DivX.dll - DivX!GetGuiVersion+0x1d0713: 0e99c4cf 8908 mov dword ptr [eax],ecx ds:002b:00000000=???????? 0:000:x86> g ModLoad: 00000000`0e6f0000 00000000`0e99e000 C:\Windows\SysWOW64\DivX.dll ModLoad: 00000000`0d5c0000 00000000`0d5d7000 C:\Windows\SysWOW64\dpl100.dll =================================================================== The version of DivX.dll concerned is 6.9.2.26. As I said, this is not relevant to the actual problem but I thought it interesting to report, nonetheless. Now we come to the real exception. Here's what's reported in the debugger at the time. =================================================================== (1014.2fa0): Access violation - code c0000005 (first chance) First chance exceptions are reported before any exception handling. This exception may be expected and handled. *** ERROR: Symbol file could not be found. Defaulted to export symbols for AVSVideoConverter.exe - AVSVideoConverter!XMLXMLNodeListWrapper$oo$xqv+0xad8e: 004d2f1a dd4028 fld qword ptr [eax+28h] ds:002b:00000028=???????????????? =================================================================== And the pop-up message box from AVSVideoConverter has the text: ==================================================================="Access violation at address 004D2F1A in module 'AVSVideoConverter.exe. Read of address 00000028." =================================================================== Now I'm primarily a kernel programmer, so I get used to grubbing around deeper in to faults. It's pretty obvious that for [eax+28h] to equal 0x00000028 means that eax refers to a NULL pointer somewhere inside the function "XMLXMLNodeListWrapper". (Though this is probably a red herring) So delving a little deeper the debugger output gives us: =================================================================== FAULTING_IP: AVSVideoConverter!XMLXMLNodeListWrapper$oo$xqv+ad8e 004d2f1a dd4028 fld qword ptr [eax+28h] EXCEPTION_RECORD: ffffffffffffffff -- (.exr 0xffffffffffffffff) ExceptionAddress: 00000000004d2f1a (AVSVideoConverter!XMLXMLNodeListWrapper$oo$xqv+0x000000000000ad8e) ExceptionCode: c0000005 (Access violation) ExceptionFlags: 00000000 NumberParameters: 2 Parameter[0]: 0000000000000000 Parameter[1]: 0000000000000028 Attempt to read from address 0000000000000028 FAULTING_THREAD: 0000000000002fa0 PROCESS_NAME: AVSVideoConverter.exe ADDITIONAL_DEBUG_TEXT: Use '!findthebuild' command to search for the target build information. If the build information is available, run '!findthebuild -s ; .reload' to set symbol path and load symbols. FAULTING_MODULE: 00000000779f0000 ntdll DEBUG_FLR_IMAGE_TIMESTAMP: 4e92cc72 ERROR_CODE: (NTSTATUS) 0xc0000005 - The instruction at 0x%08lx referenced memory at 0x%08lx. The memory could not be %s. EXCEPTION_CODE: (NTSTATUS) 0xc0000005 - The instruction at 0x%08lx referenced memory at 0x%08lx. The memory could not be %s. EXCEPTION_PARAMETER1: 0000000000000000 EXCEPTION_PARAMETER2: 0000000000000028 READ_ADDRESS: 0000000000000028 FOLLOWUP_IP: AVSVideoConverter!XMLXMLNodeListWrapper$oo$xqv+ad8e 004d2f1a dd4028 fld qword ptr [eax+28h] BUGCHECK_STR: APPLICATION_FAULT_NULL_CLASS_PTR_DEREFERENCE_INVALID_POINTER_READ_WRONG_SYMBOLS PRIMARY_PROBLEM_CLASS: NULL_CLASS_PTR_DEREFERENCE DEFAULT_BUCKET_ID: NULL_CLASS_PTR_DEREFERENCE LAST_CONTROL_TRANSFER: from 00000000005d1ad4 to 00000000004d2f1a STACK_TEXT: WARNING: Stack unwind information not available. Following frames may be wrong. 0018fcec 005d1ad4 00000000 01647d80 00000000 AVSVideoConverter!XMLXMLNodeListWrapper$oo$xqv+0xad8e 0018fd14 005d1bec 01647d80 029f16b1 405dcc60 AVSVideoConverter!DrawsectorframeFinalize+0x1ae4 0018fd6c 008e8df2 00000113 00000001 00000000 AVSVideoConverter!DrawsectorframeFinalize+0x1bfc 0018fd84 76cf62fa 006b0f0e 00000113 00000001 AVSVideoConverter!ActionitemcomboboxFinalize+0x24fe6 0018fdb0 76cf6d3a 08100e1b 006b0f0e 00000113 USER32!InternalCallWinProc+0x23 0018fe28 76cf77c4 00000000 08100e1b 006b0f0e USER32!UserCallWinProcCheckWow+0x109 0018fe88 76cf7bca 08100e1b 00000001 006b0f0e USER32!DispatchMessageWorker+0x3bc 0018fe98 00944885 0018febc 00180000 0018ff08 USER32!DispatchMessageA+0xf 0018feb4 009448bf 006b0f0e 00000113 00000001 AVSVideoConverter!ActionitemcomboboxFinalize+0x80a79 0018fed8 00944adf 0018feec 00944ae9 0018ff08 AVSVideoConverter!ActionitemcomboboxFinalize+0x80ab3 0018ff08 00402ccf 00000000 009b3034 016f35d0 AVSVideoConverter!ActionitemcomboboxFinalize+0x80cd3 0018ff50 00997d27 00400000 00000000 016f35d0 AVSVideoConverter!_GetExceptDLLinfo+0x33e 0018ff88 76a1339a 7efde000 0018ffd4 77c09ed2 AVSVideoConverter!ActionitemcomboboxFinalize+0xd3f1b 0018ff94 77c09ed2 7efde000 753d2cfc 00000000 kernel32!BaseThreadInitThunk+0xe 0018ffd4 77c09ea5 00402938 7efde000 00000000 ntdll32!__RtlUserThreadStart+0x70 0018ffec 00000000 00402938 7efde000 00000000 ntdll32!_RtlUserThreadStart+0x1b SYMBOL_STACK_INDEX: 0 SYMBOL_NAME: AVSVideoConverter!XMLXMLNodeListWrapper$oo$xqv+ad8e FOLLOWUP_NAME: MachineOwner MODULE_NAME: AVSVideoConverter IMAGE_NAME: AVSVideoConverter.exe STACK_COMMAND: ~0s ; kb BUCKET_ID: WRONG_SYMBOLS FAILURE_BUCKET_ID: NULL_CLASS_PTR_DEREFERENCE_c0000005_AVSVideoConverter.exe!XMLXMLNodeListWrapper$oo$xqv WATSON_STAGEONE_URL: http://watson.microsoft.com/StageOne/AVSVideoConverter_exe/8_1_1_509/4e92cc72/AVSVideoConverter_exe/8_1_1_509/4e92cc72/c0000005/000d2f1a.htm?Retriage=1 Followup: MachineOwner --------- 0:000:x86> rM 2 eax=00000000 ebx=01647d80 ecx=00000000 edx=0f9fc7e8 esi=09c407d0 edi=00000000 eip=004d2f1a esp=0018fcec ebp=0018fcec iopl=0 nv up ei pl zr na pe nc AVSVideoConverter!XMLXMLNodeListWrapper$oo$xqv+0xad8e: 004d2f1a dd4028 fld qword ptr [eax+28h] ds:002b:00000028=???????????????? =================================================================== The faulting module is given as ntdll but this is only because the fault occurs inside an AVSVideoConverter thread which reuires ntdll to own and schedule it. This is clear from the stack trace. As a final check on things I dumped the registers and as expected EAX is indeed NULL. The stack trace above is not really useful since without the AVSVideoConverter PDB symbol files the debugger is working with and reporting the nearest known public symbol it can find. If you want to send me the PDB files I can narrow this down quickly for you.